package algorithm.leetcode.medium;

/*
 给定一棵二叉树，想象自己站在它的右侧，按照从顶部到底部的顺序，返回从右侧所能看到的节点值
 */

import java.util.ArrayList;
import java.util.List;

/**
 * @author jack.wu
 * @version 1.0
 * @date 2020/12/10
 */
public class Question199 {

    public static void main(String[] args) {

    }

    private List<Integer> res = new ArrayList<>(10);

    public List<Integer> rightSideView(TreeNode root) {
        dfs(root, 0);
        return res;
    }

    /**
     * 思路：
     * 每层只装如一个
     * depth 很重要控制层
     */
    private void dfs(TreeNode root, int depth) {
        if (root == null) {
            return;
        }
        if (depth == res.size()) {
            res.add(root.val);
        }
        depth++;
        dfs(root.right, depth);
        dfs(root.left, depth);
    }


    private static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
}
